﻿#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//题目
//求1！+ 2！ + 3！+ ···n!
//#include<stdio.h>
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret = 1;
//	int i = 0;
//	int sum = 0;
//	for (i = 1;i <= n;i++)
//	{
//		ret *= i;
//		sum += ret;
//	}
//	printf("%d\n", sum);
//	return 0;
//}
//递归与迭代
//
//递归来求n的阶乘
//n!=n*(n-1)!
//int fac(int n)
//{
//	if (n == 0)
//	{
//		return 1;
//	}
//	else
//	{
//		return n * fac(n - 1);
//	}
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret = fac(n);
//	printf("%d\n", ret);
//	return 0;
//}
//顺序打印⼀个整数的每⼀位
//输⼊⼀个整数m，按照顺序打印整数的每⼀位
//输⼊：1234 输出：1 2 3 4
//输⼊：520 输出：5 2 0
//void print(int num)
//{
//	if (num > 9)
//	{
//		print(num / 10);//如果n不是一位数的话，就进行递推，先打印个位数，一直等到递归结束后，开始回归打印
//	}
//	printf("%d ", num % 10);
//}
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//	print(num);
//	return 0;
//}
//求第n个斐波那契数
//1 1 2 3 5 8 13 21 34 55···
//我们不难看出这个第n个数等于第n-1和第n-2对应的数值相加
//fib(n)=fib(n-1)+fib(n-2)
//int count = 0;
//int fib(int n)
//{
//	if (n == 3)
//	{
//		count++;
//	}
//	if (n > 2)
//	{
//		return fib(n - 1) + fib(n - 2);
//	}
//	//前两个数值为1
//	else
//	{
//		return 1;
//	}
//}
//
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret = fib(n);
//	printf("%d\n", ret);
//	printf("count=%d\n", count);
//	return 0;
//}
//可以很轻松的看出这个明显效率很低，可以使用迭代来写
// 1 1 2 3 5 8 13 21 34 55
// a b c
// 不断往后推进，c=a+b,a=b,b=c,一直往后走，最后返回b
//int fib(int n)
//{
//	int a = 1;
//	int b = 1;
//	int c = 0;
//	while (n > 2)
//	{
//		c = a + b;
//		a = b;
//		b = c;
//		n--;
//	}
//	return c;
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret = fib(n);
//	printf("%d\n", ret);
//	return 0;
//}
//int main()
//{
//	int i = 0;
//	int j = 0;
//	for (i = 1;i <= 9;i++)//控制行数
//	{
//		for (j = 1;j <= i;j++)//控制一行打印几个
//		{
//			printf("%d*%d=%-2d ", j, i, i * j);//%-2d是让其站两个字符左对齐，%d默认是右对齐，
//		}
//		printf("\n");
//	}
//	return 0;
//}
// 乘法口诀表
//print(int n)
//{
//	int i = 0;
//	int j = 0;
//	for (i = 1;i <= n;i++)
//	{
//		for (j = 1;j <= i;j++)
//		{
//			printf("%d*%d=%d ", j, i, i * j);
//		}
//		printf("\n");
//	}
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	print(n);
//	return 0;
//}
//一维数组】输入10个整数，求平均值
//int main()
//{
//	int arr[10] = { 0 };
//	int i = 0;
//	double sum = 0;
//	for (i = 0;i < 10;i++)
//	{
//		scanf("%d", &arr[i]);
//		sum += arr[i];
//	}
//	double ave = sum / 10.0;
//	printf("%lf\n", ave);
//	return 0;
//}
//将数组A中的内容和数组B中的内容进行交换。（数组一样大）
//int main()
//{
//	int a[10] = { 0 };
//	int b[10] = { 0 };
//	int i = 0;
//	printf("请输入a数组的内容：");
//	for (i = 0;i < 10;i++)
//	{
//		
//		scanf("%d", &a[i]);
//	}
//	printf("请输入b数组的内容：");
//	for (i = 0;i < 10;i++)
//	{
//
//		scanf("%d", &b[i]);
//	}
//	for (i = 0;i < 10;i++)
//	{
//		int temp = a[i];
//		a[i] = b[i];
//		b[i] = temp;
//	}
//	printf("交换后a数组的内容：");
//	for (i = 0;i < 10;i++)
//	{
//
//		printf("%d ", a[i]);
//	}
//	printf("\n交换后b数组的内容：");
//	for (i = 0;i < 10;i++)
//	{
//
//		printf("%d ", b[i]);
//
//	}
//	return 0;
//}
//写一个代码打印1 - 100之间所有3的倍数的数字
//int main()
//{
//	int i = 0;
//	for (i = 1;i <= 100;i++)
//	{
//		if (i % 3 == 0)
//		{
//			printf("%d ", i);
//		}
//	}
//	return 0;
//}
//写代码将三个整数数按从大到小输出。
//int main()
//{
//	int a = 0;
//	int b = 0;
//	int c = 0;
//	scanf("%d%d%d", &a, &b, &c);
//	int temp = 0;
//	if (a < b)
//	{
//		temp = a;
//		a = b;
//		b = temp;
//	}
//	if (a < c)
//	{
//		temp = a;
//		a = c;
//		c = temp;
//	}
//	if (b < c)
//	{
//		temp = b;
//		b = c;
//		c = temp;
//	}
//	printf("%d %d %d\n", a, b, c);
//	return 0;
//}
//计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值，打印出结果
//int main()
//{
//	int i = 0;
//	double sum = 0;
//	int flag = 1;
//	for (i = 1;i <= 100;i++)
//	{
//		sum += 1.0 / i * flag;
//	}
//	printf("%lf\n", sum);
//	return 0;
//}
//编写程序数一下 1到 100 的所有整数中出现多少个数字9
//int main()
//{
//	int i = 0;
//	int count = 0;
//	for (i = 1;i <= 100;i++)
//	{
//		if (i % 10 == 9)
//		{
//			count++;
//		}
//	   if (i / 10 == 9)
//		{
//			count++;
//		}
//	}
//	printf("%d\n", count);
//	return 0;
//}
//打印1000年到2000年之间的闰年
//int main()
//{
//	int i = 0;
//	for (i = 1000;i <= 2000;i++)
//	{
//		if (((i % 4 == 0) && i % 100 != 0) || (i % 400 == 0))
//		{
//			printf("%d ", i);
//		}
//	}
//	return 0;
//}
// 现函数判断year是不是润年。
//int is_leap_year(int year)
//{
//	if (((year % 4 == 0) && year % 100 != 0) || (year % 400 == 0))
//	{
//		return 1;
//	}
//	return 0;
//}
//int main()
//{
//	int year = 0;
//	scanf("%d", &year);
//	if (is_leap_year(year))
//	{
//		printf("是润年\n");
//	}
//	else
//	{
//		printf("不是润年\n");
//	}
//	return 0;
//}
//给定两个数，求这两个数的最大公约数
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d%d", &a, &b);
//	int c = 0;
//	while (c = a % b)
//	{
//		a = b;
//		b = c;
//	}
//	printf("%d\n", b);
//	return 0;
//}
//二分查找
//二分查找-函数实现
//int search(int arr[10], int left, int right, int n)
//{
//	int i = 0;
//	while (left <= right)
//	{
//		int mid = (left + right) / 2;
//		if (arr[mid] > n)
//		{
//			right = mid - 1;
//		}
//		else if (arr[mid] < n)
//		{
//			left = mid + 1;
//		}
//		else
//		{
//			return mid;
//		}
//	}
//	return -1;
//
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int right = sizeof(arr) / sizeof(arr[0]);
//	int left = 0;
//	int ret=search(arr, left, right,n);
//	if (ret )
//	{
//		printf("找到了，下标是%d\n",ret );
//	}
//	if (ret == -1)
//	{
//		printf("找不到\n");
//	}
//	return 0;
//}
//实现一个函数is_prime，判断一个数是不是素数。
//利用上面实现的is_prime函数，打印100到200之间的素数。
//#include<math.h>
//int is_prime(int i)
//{
//	int j = 0;
//	for (j = 2;j <= sqrt(i);j++)
//	{
//		if (i % j == 0)
//		{
//			return 0;
//		}
//	}
//	return 1;
//}
//int main()
//{
//	int i = 0;
//	for (i = 101;i < 200;i++)
//	{
//		if (is_prime(i))
//		{
//			printf("%d ", i);
//		}
//	}
//	return 0;
//}
//求10 个整数中最大值
//#include<stdio.h>
//int main()
//{
//	int arr[10] = { 0 };
//	int max = 0;
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	for (i = 0;i < sz;i++)
//	{
//		scanf("%d", &arr[i]);
//	    if (max < arr[i])
//		{
//			max = arr[i];
//		}
//	}
//	printf("%d\n", max);
//	return 0;
//}
//喝汽水，1瓶汽水1元，2个空瓶可以换一瓶汽水，给20元，可以喝多少汽水（编程实现）
////int main()
////{
////	int n = 0;
////	scanf("%d", &n);
////	//汽水总数初始化为钱数，因为1元一瓶
////	int sum = n;
////	while (n>1)
////	{
////		//汽水总数=原本的+空瓶换的
////		sum += n / 2;
////		//剩余空瓶个数
////		n = n % 2 + n / 2;
////	}
////	printf("%d\n", sum);
////}
//int main()
//{
//	int money = 0;
//	scanf("%d", &money);
//	printf("%d\n", 2 * money - 1);
//	return 0;
//}

//打印菱形
// n=7
//      *  //7个空格， 1个* 
//     *** //6个空格 ，3个*
//    *****
//   *******
//  *********
// ***********
//*************
// ***********
//  *********
//   *******
//    *****
//     ***
//      *
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int i = 0;
//	int j = 0;
//	//上半部分
//	for (i = 0;i < n;i++)
//	{
//		//n-i-1个空格
//		for (j = i;j <n-1;j++)
//		{
//			printf(" ");
//		}
//		//2*i+1个星
//		for (j = 1;j <= 2 * i + 1;j++)
//		{
//			printf("*");
//		}
//		printf("\n");
//	}
//	for (i = 1;i <= n-1;i++)
//	{
//		//i个空格
//		for (j = 1;j <= i;j++)
//		{
//			printf(" ");
//		}
//		//2*（n-1）-2*i+1个*
//		for (j =i;j <= 2 * (n - 1) - i;j++)
//		{
//			printf("*");
//		}
//		printf("\n");
//	}
//	return 0;
//}
//// n=7
//      *  //7个空格， 1个* 
//     *** //6个空格 ，3个*
//    *****
//   *******
//  *********
// ***********
//*************
// ***********
//  *********
//   *******
//    *****
//     ***
//      *
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int i = 0;
//	int j = 0;
//	for (i = 0;i < n;i++)
//	{
//		//n-i-1个空格，i从0开始
//		for (j = 0;j < n - i-1;j++)
//		{
//			printf(" ");
//		}
//		//2*i+1个空格
//		for (j = 0;j < 2 * i + 1;j++)
//		{
//			printf("*");
//		}
//		printf("\n");
//	}
//	for (i = 0;i < n - 1;i++)
//	{
//		//i+1个空格，i从0开始
//		for (j = 0;j < i + 1;j++)
//		{
//			printf(" ");
//		}
//		//2 * (n - 1 - i) - 1个星
//		for (j = 0;j < 2 * (n - 1 - i) - 1;j++)
//		{
//			printf("*");
//		}
//		printf("\n");
//
//	}
//	return 0;
//}
